home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mobiclic 83
/
MOBICLIC 83.ISO
/
mac
/
pour MacOsX
/
QuickTime6_MacOsX
/
QuickTime651.pkg
/
Contents
/
Resources
/
InstallationCheck
< prev
next >
Wrap
Text File
|
2004-02-23
|
4KB
|
182 lines
#!/usr/bin/perl
my $SYSTEM_VERS = "/System/Library/CoreServices/SystemVersion.plist";
my $EXIT_VALUE = 0;
my $Package_Path = $ENV{PACKAGE_PATH};
if(CheckVersion("$SYSTEM_VERS", "10.3", "ProductVersion", "<")) {
@localPkgVers = ExtractPkgVersion("$Package_Path");
@receiptVers = ExtractPkgVersion("/Library/Receipts/" . GetPackageName("$Package_Path"));
if ($receiptVers[0] == $localPkgVers[0]) {
if ($receiptVers[1] > $localPkgVers[1]){
$EXIT_VALUE = ((1 << 6));
}
} else {
if ($receiptVers[0] > $localPkgVers[0]){
$EXIT_VALUE = ((1 << 6));
}
}
}
#
# Don't install if target system is less than 10.2.6
#
if(CheckVersion("$SYSTEM_VERS", "10.2.6", "ProductVersion", "<")) {
$EXIT_VALUE = (1 << 6);
}
exit ($EXIT_VALUE);
###
sub CheckVersion
{
my $path = $_[0];
my $version = $_[1];
my $keyName = $_[2];
my $operator = $_[3];
if (! -e $path) {
return 0;
}
if (!$operator) {
$operator = "==";
}
my $oldSeperator = $/;
$/ = \0;
open( PLIST, "$path") || do {
return 0;
};
$plistData = <PLIST>;
$plistData =~ /<dict>(.*?)<\/dict>/gis;
@items = split(/<key>/, $plistData);
shift @items;
foreach $item (@items) {
$item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
$versiondata{ $1 } = $2;
}
close(PLIST);
$/ = $oldSeperator;
@theVersionArray = split(/\./, $versiondata{$keyName});
for ($i = 0; $i < 3; $i++) {
if(!$theVersionArray[$i]) {
$theVersionArray[$i] = '0';
}
}
@versionArray = split(/\./, $version);
my $actualVersion;
for ($i = 0; $i < 3; $i++) {
if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
$actualVersion = $theVersionArray[$i];
$version = $versionArray[$i];
last;
}
}
my $expression = '$actualVersion ' . $operator . ' $version';
if( eval ($expression) )
{
return 1;
}
else
{
return 0;
}
}
sub ExtractPkgVersion
{
my $path = $_[0];
my $pkgMajor;
my $pkgMinor;
$pkgMajor = GetPlistVersion("$path/Contents/Info.plist", "IFMajorVersion");
$pkgMinor = GetPlistVersion("$path/Contents/Info.plist", "IFMinorVersion");
if (! $pkgMajor || ! $pkgMinor)
{
open (FILE, "$path/Contents/Resources/package_version");
$line = <FILE>;
chomp $line;
$line =~ /Major:\s(.*)/;
$pkgMajor = $1;
$line = <FILE>;
chomp $line;
$line =~ /Minor:\s(.*)/;
$pkgMinor = $1;
close (FILE);
}
if (! $pkgMajor)
{
$pkgMajor = 0;
}
if (! $pkgMinor)
{
$pkgMinor = 0;
}
return ($pkgMajor, $pkgMinor);
# return $pkgMajor . "." . $pkgMinor;
}
sub GetPlistVersion
{
my $path = $_[0];
my $keyName = $_[1];
my %versiondata;
if (! -e $path) {
return 0;
}
my $oldSeperator = $/;
$/ = \0;
open( PLIST, "$path") || do {
return 0;
};
$plistData = <PLIST>;
$plistData =~ /<dict>(.*?)<\/dict>/gis;
@items = split(/<key>/, $plistData);
shift @items;
foreach $item (@items) {
$item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
$versiondata{ $1 } = $2;
}
close(PLIST);
$/ = $oldSeperator;
return $versiondata{$keyName};
}
sub GetPackageName
{
my $pathToPackage = $_[0];
my @pathItems = split (/\//,$pathToPackage);
return $pathItems[-1];
}